AWS Elemental MediaConvertでアカウント固有のエンドポイントが不要になっています! [いつの間に]

AWS Elemental MediaConvertでアカウント固有のエンドポイントが不要になっています! [いつの間に]

MediaConvertでAPIを利用する際に必要だったアカウント固有のエンドポイントの指定、2024年の春ごろから不要になっていたようです。実際に「--endpoint-url」を指定をせずにAWS CLIを実行して確認してみました。
Clock Icon2024.07.29

はじめに

清水です。ブロードキャストグレードの機能を備えたファイルベースの動画変換サービスであるAWS Elemental MediaConvert、これまでAWS CLIやAWS SDKなどのAPIを利用する際にはAWSアカウント、リージョン固有のエンドポイントを指定する必要がありました。

このAWSアカウント、リージョン固有のエンドポイント(本エントリ内では単に「アカウント固有のエンドポイント」と称します)が 不要になっていた ことが確認できました。実際にアカウント固有のエンドポイントを指定せずにAWS CLIが使えることや、アカウント固有のエンドポイントの指定が不要になった時期などについてまとめてみたいと思います。

MediaConvertをAPI経由で利用するときに必要だったアカウント固有のエンドポイント

re:Invent 2017真っ最中である2017年11月、AWS Media Servicesの一つとして
リリース
されたAWS Elemental MediaConvert、AWS CLIやAWS SDKなどAPI経由で利用する際には多くのAWSサービスと異なり、AWSアカウント、リージョン固有のエンドポイントを指定する必要がありました。例としてAWS CLIでの具体的な使用方法について、以下エントリにまとめています。

(余談ですが、AWS CLIのサービス固有エンドポイント機能を使えばこのMediaConvertのアカウント固有のエンドポイントの指定を省略できるのでは、と検証したこともありました。AWS CLIでサービス固有エンドポイントを使ってMediaConvertのコマンドをシンプルに実行する! | DevelopersIO

以下、AWS CLIでのMediaConvertコマンドの 従来の 利用例です。([小ネタ] AWS Elemental MediaConvertをAWS CLIで使うときの注意点!〜アカウント個別のendpointを指定しよう〜 | DevelopersIO より引用します。)

リージョン固有のendponitをしていないままサブコマンドを実行しようとすると、customer-specific endpointエンドポイントを利用せよ、というメッセージとともにエラーが返ってきていました。

従来の利用例
$ aws mediaconvert list-presets \
    --region ap-northeast-1

An error occurred (BadRequestException) when calling the ListPresets operation: You must use the customer-specific endpoint 'https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com' for this operation.

このcustomer-specific endpointをAWS CLIに--endpoint-urlオプションで指定することで、各サブコマンドが実行できるというぐあいです。

従来の利用例
$ aws mediaconvert list-presets \
    --region ap-northeast-1 \
    --endpoint-url https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com
{
    "Presets": []
}

endpointを確認するためのaws mediaconvert describe-endpointsサブコマンドはこのcustomer-specific endpointの指定が不要で、一度このサブコマンドなどでcustomer-specific endpointを確認して使用する、というぐあいでした。

従来の利用例
$ aws mediaconvert describe-endpoints --region ap-northeast-1
{
    "Endpoints": [
        {
            "Url": "https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com"
        }
    ]
}

このcustomer-specific endpointの利用やaws mediaconvert describe-endpointsサブコマンド(ないしDescribeEndpoints API)、わかってしまえばなんてことはないのですが、初めて使用する際などに躓いてしまうことや、また1秒あたりの最大リクエスト数が大きな値ではないといった注意点がありました。後者についてはAWSアカウントとリージョン固有の値であり、いちど確認すればハードコーディング可能で、この使用方法が推奨されていました。そのため頻繁にDescribeEndpoints APIを実行する必要はないのですが、この前提を確認することが必要だったわけです。

AWS CLIの例を確認してきましたが、ほかの各種AWS SDKでも同様の事情でした。例えばAWS SDK for Python (Boto3)では以下のように、endpoint_urlを指定する必要がありました。

従来の利用例
mediaconvert =  boto3.client(
    'mediaconvert', 
    region_name=os.environ['MEDIACONVERT_REGION'], 
    endpoint_url=os.environ['MEDIACONVERT_ENDPOINT'])

MediaConvertでアカウント固有のエンドポイントの指定が不要になった!

さて、先日ひさしぶりにAWS CLIでaws mediaconvertコマンドを利用しようとしました。以下ブログエントリのaws mediaconvert search-jobsサブコマンドですね。

User Guideの該当箇所(Searching for jobs)を参照しながら以下コマンドを実行しました。無事にコマンドは実行できたのですが、なにか忘れているような気がします。

$ aws mediaconvert search-jobs \
>   --input-file IMG_4657.MOV

そう、--endpoint-urlオプションでのアカウント固有のエンドポイントの指定ですね。アカウント固有のエンドポイントの指定は忘れてしまったのに、問題なくaws mediaconvert search-jobsサブコマンドが実行できたのです。またUser Guideにも--endpoint-urlを指定せよ、という説明はありません。

de01
引用元: Searching for jobs - Working with jobs - MediaConvert

あれ?と思いつつ、同ページ内のほかAWS CLIコマンド実行例についても確認してみましたが、いずれも--endpoint-urlの指定についての記載はありませんでした。

そういえば、と思いMediaConvertマネジメントコンソールの左側メニューを見返してみます。以前はそこにあったはずの Account のメニューが見当たりません。( Search に置き換わってしまったのでしょうか!?)

de02

なお、以下は2023/11のブログエントリ(AWS Elemental MediaConvertでVideo overlays(ビデオソースの置き換え)ができるようになっていました! | DevelopersIO)からスクリーンショットの引用です。この時点では Account のメニューがあったのですが。

de03
引用元: AWS Elemental MediaConvertでVideo overlays(ビデオソースの置き換え)ができるようになっていました! | DevelopersIO

あれ?と思いつつ、What's New at AWSやMediaConvert User GuideのDocument historyなどを確認してみますが、それらしきアップデート情報は見つかりません。しかしこのブログエントリからリンクしていたaws mediaconvert describe-endpointsサブコマンドのCommand Referenceページを確認してみると以下の記載がありました。

Note that DescribeEndpoints is no longer required. We recommend that you send your requests directly to the regional endpoint instead.

DescribeEndpoints APIは不要になり、リージョンエンドポイントに直接リクエストを送信することができるようになっている、ということですね!(そしてリージョンエンドポイントへ直接リクエストを投げることが 推奨 となっています。)

この情報はAWS CLI Command Referenceのほか、MediaConvert API Referenceにも記載されていました。

アカウント固有のエンドポイントを指定せずにAWS CLIでMediaConvertを操作してみた

AWS CLI Command ReferenceMediaConvert API Referenceなどから、MediaConvertでアカウント固有のエンドポイントを使わずとも、MediaConvert APIが利用できるようになっていることが確認できました。

実際にアカウント固有のエンドポイントを指定せずにMediaConvert APIが実行できることをAWS CLIの実行を通して確認してみましょう。AWS CLI実行環境にはAWS CloudShellを利用しました。以下がバージョンなどの情報です。

[cloudshell-user@ip-10-130-51-128 ~]$ aws --version
aws-cli/2.17.16 Python/3.11.9 Linux/6.1.96-102.177.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

先ほどAWS CLIでMediaConvertコマンドの従来の利用例として掲示した、aws mediaconvert list-presetsサブコマンドを実行してみます。例示した以前のエントリ当時と同様に--region ap-northeast-1オプションも付与してみました。エラーとならずに、実行結果としてPresetsの情報が返ってきていることがわかります。

[cloudshell-user@ip-10-130-51-128 ~]$ aws mediaconvert list-presets \
> --region ap-northeast-1
{
    "Presets": [
        {
            "Arn": "arn:aws:mediaconvert:ap-northeast-1:123456789012:presets/29_97fps_3500kbps",
            "Category": "HLS",
            "CreatedAt": "2019-02-01T07:54:27+00:00",
            "Description": "Wifi, 1280x720, 16:9, 29.97fps, 3500kbps",
            "LastUpdated": "2019-02-01T07:54:27+00:00",
            "Name": "29_97fps_3500kbps",
            "Settings": {
<以下省略>

なお、従来と同様に--endpoint-urlでアカウント固有のエンドポイントを指定しても実行時にエラーなどにはなりませんでした。。またDescribeEndpoints APIも利用自体は可能です。(ただし、各ドキュメントに記載があるとおり アカウント固有のエンドポイントを使わないことが推奨されています 。)

[cloudshell-user@ip-10-130-51-128 ~]$ aws mediaconvert describe-endpoints
{
    "Endpoints": [
        {
            "Url": "https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com"
        }
    ]
}
[cloudshell-user@ip-10-130-51-128 ~]$ aws mediaconvert list-presets \
>   --region ap-northeast-1 \
>   --endpoint-url https://4exxxxxx.mediaconvert.ap-northeast-1.amazonaws.com
{
    "Presets": [
        {
            "Arn": "arn:aws:mediaconvert:ap-northeast-1:123456789012:presets/29_97fps_3500kbps",
            "Category": "HLS",
            "CreatedAt": "2019-02-01T07:54:27+00:00",
            "Description": "Wifi, 1280x720, 16:9, 29.97fps, 3500kbps",
            "LastUpdated": "2019-02-01T07:54:27+00:00",
            "Name": "29_97fps_3500kbps",
            "Settings": {
<以下省略>

なお、AWS CLIのmediaconvertコマンドでいえば、AWS CLI Command Referenceページの Available Commands の利用可能なサブコマンド一覧で、describe-endpoints は表示がなくなっています。使用が推奨されない、けれどCommand Referenceとしてページだけは残っている、という状況かなと思います。

de04
引用元: mediaconvert — AWS CLI 1.33.31 Command Reference

de05
引用元: mediaconvert — AWS CLI 2.17.18 Command Reference

アカウント固有のエンドポイントが不要になったタイミングを確認してみた

MediaConvert APIでアカウント固有のエンドポイントの利用が不要になったことが確認できました。さてこのAPI実行時に利用するエンドポイント、いつから変更されたのでしょうか。先にも述べたとおりWhat's New at AWSやMediaConvert User GuideのDocument historyなどに記載はありませんでした。またAWS CLIのCHANGELOGにもそれらしきものは見当たりません。

なんとかして確認できないかなと、MediaConvert API ReferenceのINTERNET ARCHIVE Wayback Machineでアーカイブされたページや、Boto3の過去バージョンのドキュメントならびに更新履歴について確認してみました。

正確にいつからアカウント固有のエンドポイントが不要になったかは確認できませんでしたが、おおよそ2024年の春ごろにドキュメントなどが更新されていたことがわかりました。

MediaConvert API Referenceのアーカイブから確認

アカウント固有のエンドポイントを利用していたころのブログエントリでは、MediaConvert API Referenceの以下ページを参照していました。

現時点(2024/07/29)でこのページを確認すると、endpointについての記載は一切ありません。

INTERNET ARCHIVE Wayback Machineで参照できる、アーカイブされた一番最新のページ、2024/03/27時点のものでもendpointに付いての記載はありませんでした。

しかしもう一つ古いのアーカイブ、2023/12/05時点のページではendpointについての記載がありました。

de06
引用元: Getting Started with AWS Elemental MediaConvert Using the AWS SDKs or the AWS CLI - AWS Elemental MediaConvert API Reference - 2023/12/05時点のアーカイブ

MediaConvert API Referenceの上記ページでは2023/12/05以降、2024/03/27のどこかのタイミングでエンドポイントについての記載がなくなっていたことがわかりました。

Boto3のドキュメント履歴から確認

MediaConvert API Referenceのほか、Boto3のドキュメントについても確認してみました。(Boto3のドキュメントについては、INTERNET ARCHIVE Wayback Machineを頼らずとも、パスのlatest部分をバージョン番号に変えることで以前のバージョンのドキュメントが参照できるようです。便利!)describe_endpointsの現時点(2024/07/29)の最新のドキュメントページは以下になります。

以下のように、describe_endpointsは非推奨となっている旨が記載されています。

Danger
This operation is deprecated and may not function as expected. This operation should not be used going forward and is only kept for the purpose of backwards compatiblity.

このdescribe_endpointsが非推奨である旨の記載、確認したところVersion 1.34.33から登場したようです。一つ前のVersion 1.34.32に記載はありませんでした。

このVersion 1.34.33のタイミングで、どんなapi-changeがあったかboto3/CHANGELOGで確認してみます。以下のようにMediaConvertについての変更がありましたが、直接describe_endpointsには関係なさそうです。

1.34.33
api-change:cognito-idp: [botocore] Added CreateIdentityProvider and UpdateIdentityProvider details for new SAML IdP features
api-change:ivs: [botocore] This release introduces a new resource Playback Restriction Policy which can be used to geo-restrict or domain-restrict channel stream playback when associated with a channel. New APIs to support this resource were introduced in the form of Create/Delete/Get/Update/List.
api-change:managedblockchain-query: [botocore] This release adds support for transactions that have not reached finality. It also removes support for the status property from the response of the GetTransaction operation. You can use the confirmationStatus and executionStatus properties to determine the status of the transaction.
api-change:mediaconvert: [botocore] This release includes support for broadcast-mixed audio description tracks.
api-change:neptune-graph: [botocore] Adding new APIs in SDK for Amazon Neptune Analytics. These APIs include operations to execute, cancel, list queries and get the graph summary.

とはいえ、変更されたタイミングとしてはここかなということで、いつぐらいの変更だったかた確認しみましょう。Version 1.34.33については2024/02/01にCommitされたようです。

2024年2月頭ぐらいからDescribeEndpoints APIが不要になり非推奨と表示されるようになっていたことがわかりました。

まとめ

AWS Elemental MediaConvertで、AWS CLIやAWS SDKなどAPI経由で利用する際に必要だったAWSアカウント、リージョン固有のエンドポイントの指定が不要になっていたアップデートについてお届けしました。今年(2024年)の春ごろにはアカウント固有のエンドポイントの指定は不要になっていたようです。

わかってしまえばなんてことはないアカウント固有のエンドポイントですが、初めて使う場合などにはつまづきポイントにはなってしまっていたかなと思います。アカウント固有のエンドポイントの利用が不要になり、ほかAWSサービスと同様の使い心地でMediaConvert APIが利用できるようになりました。AWS What's Newやドキュメントなどにも掲載されていないひっそりとしたアップデートでしたが、個人的にはとても嬉しく、またびっくりしたアップデートでした。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.